"use strict";
/**
 * 星星脚本组件
 */

cc.Class({
  extends: cc.Component,

  properties: {
    // 收集星星的距离
    pickRadius: 0,
  },
  getPlayerDistance: function () {
    // 根据 Player 节点位置判断距离
    var playerPos = this.game.player.getPosition();
    // 根据两点位置计算两点之间距离
    var dist = this.node.position.sub(playerPos).mag();
    return dist;
  },
  onPicked: function () {
    // 当星星被收集时，调用 Game 脚本中的接口，生成一个新的星星
    this.game.spawnNewStar();

    // 调用主逻辑的得分逻辑
    this.game.gainScore();

    // 然后销毁当前星星节点
    this.node.destroy();
  },
  update: function (dt) {
    // 每帧判断星星和主角之间的距离是否小于收集距离
    if (this.getPlayerDistance() < this.pickRadius) {
      // 调用收集行为
      this.onPicked();
      return;
    }
    // 根据 Game 脚本中的计时器更新星星的透明度
    var opacityRatio = 1 - this.game.timer / this.game.starDuration;
    var minOpacity = 50;
    this.node.opacity =
      minOpacity + Math.floor(opacityRatio * (255 - minOpacity));
  },
});
